---
title: SAIF.Business.View.Provider business rules
summary: Enumerated business rules with per-rule trigger, enforcement, and outcomes.
status: draft
owner: SAIF Doc Gen
last_reviewed: 2026-08-21
library: SAIF.Business.View.Provider
reference_type: embedded
---

# SAIF.Business.View.Provider business rules

This page captures business rules enforced by this library.

## BR-PRV-001 Primary tax ID must be a 9-digit number

| Field | Value |
| --- | --- |
| **Statement** | A provider's primary tax ID must convert to a numeric value exactly 9 digits long. |
| **Trigger** | Rule-engine validation of `PrimaryTaxID` after `clsProvider` construction/load. |
| **Enforcement** | `clsProvider.Rule_ValidPrimaryTaxId` (`<RuleData("clsProvider01", "Invalid provider primary tax ID")>`). |
| **Outcome** | Broken rule "Invalid provider primary tax ID"; `IsValid` becomes false. |
| **Tables** | [PROVIDER](database-tables.md#provider) |
| **SQL** | [SQL-PRV-01](sql/SQL-PRV-01-provider-by-id.md), [SQL-PRV-01b](sql/SQL-PRV-01b-provider-by-tax-id.md) |
| **Source** | `SAIF.Business.View.Provider/clsProvider.vb` |

---

## BR-PRV-002 Payee address resolution order

| Field | Value |
| --- | --- |
| **Statement** | The payee address for a provider is the address of the tax-ID record that is effective today, not yet expired, and whose tax ID equals the primary location's provider primary tax ID; if none is found the primary location's active payment address is used. |
| **Trigger** | Read of `clsProvider.PayeeAddress`. |
| **Enforcement** | `clsProvider.vb:153–166`. |
| **Outcome** | Returns the tax-ID address or falls back to the payment address. |
| **Tables** | [PROVIDER_TAX_ID](database-tables.md#provider_tax_id) |
| **SQL** | [SQL-PTAX-01](sql/SQL-PTAX-01-provider-tax-ids.md) |
| **Source** | `SAIF.Business.View.Provider/clsProvider.vb` |

---

## BR-PRV-003 Provider-set retrieval uses unparameterized SQL

| Field | Value |
| --- | --- |
| **Statement** | Provider-set retrieval accepts either a tax-ID array or a raw WHERE clause and injects both into SQL by string concatenation.* |
| **Trigger** | `GetProviderCollection` / `GetProvidersUsingWhere`. |
| **Enforcement** | `clsProviderCollection.Criteria.BuildSQLWhere`, `clsProviderCollection.vb:277–294`. |
| **Outcome** | Query is built without bind variables — untrusted input would be executed as SQL.* |
| **Tables** | [PROVIDER](database-tables.md#provider), [PROVIDER_TAX_ID](database-tables.md#provider_tax_id) |
| **SQL** | [SQL-PRV-02](sql/SQL-PRV-02-provider-collection-by-taxid.md), [SQL-PRV-02b](sql/SQL-PRV-02b-provider-collection-by-where.md) |
| **Source** | `SAIF.Business.View.Provider/clsProviderCollection.vb` |

---

## BR-PRV-004 Providers retrieved via factory methods are read-only

| Field | Value |
| --- | --- |
| **Statement** | A provider retrieved through the public factory methods is returned in read-only state. |
| **Trigger** | `clsProvider.GetProvider` (both overloads). |
| **Enforcement** | `clsProvider.vb:317–339`. |
| **Outcome** | `ReadOnly = True` on the returned object. |
| **Tables** | [PROVIDER](database-tables.md#provider) |
| **SQL** | [SQL-PRV-01](sql/SQL-PRV-01-provider-by-id.md), [SQL-PRV-01b](sql/SQL-PRV-01b-provider-by-tax-id.md) |
| **Source** | `SAIF.Business.View.Provider/clsProvider.vb` |

---

## BR-PRV-005 Payee type is always Provider

| Field | Value |
| --- | --- |
| **Statement** | The payee type of a provider or provider location is always `Provider` with code `"PROV"`. |
| **Trigger** | Read of `PayeeType` / `PayeeTypeCode`. |
| **Enforcement** | `clsProvider.vb:182–192`; `clsProviderLocation.vb:412–422`. |
| **Outcome** | Constant payee classification. |
| **Source** | `SAIF.Business.View.Provider/clsProvider.vb`, `SAIF.Business.View.Provider/clsProviderLocation.vb` |

---

## BR-PRV-006 Primary location selection

| Field | Value |
| --- | --- |
| **Statement** | The primary location of a provider is the location flagged primary; if none is flagged, the first location; if there are no locations, nothing. |
| **Trigger** | Read of `clsProvider.PrimaryLocation`. |
| **Enforcement** | `clsProvider.vb:104–117`. |
| **Outcome** | Deterministic primary-location selection. |
| **Tables** | [PROVIDER_LOCATION](database-tables.md#provider_location) |
| **SQL** | [SQL-PLOC-02](sql/SQL-PLOC-02-locations-by-provider.md) |
| **Source** | `SAIF.Business.View.Provider/clsProvider.vb` |

---

## BR-PLOC-001 Provider location ID must be positive

| Field | Value |
| --- | --- |
| **Statement** | A loaded provider location must have a `ProviderLocationID` greater than zero. |
| **Trigger** | Level I rule check on `ProviderLocationID`. |
| **Enforcement** | `clsProviderLocation.Rule_ValidProviderLocation`, `clsProviderLocation.vb:605, 615–618` (`clsProviderLocation01`). |
| **Outcome** | Broken rule "Error: Invalid provider ID". |
| **Tables** | [PROVIDER_LOCATION](database-tables.md#provider_location) |
| **SQL** | [SQL-PLOC-01](sql/SQL-PLOC-01-provider-location-by-id.md) |
| **Source** | `SAIF.Business.View.Provider/clsProviderLocation.vb` |

---

## BR-PLOC-002 Provider ID must be positive

| Field | Value |
| --- | --- |
| **Statement** | The provider owning a location must resolve to a `ProviderID` greater than zero. |
| **Trigger** | Level III rule check on `ProviderID`. |
| **Enforcement** | `clsProviderLocation.Rule_ValidProvider`, `clsProviderLocation.vb:608, 623–626` (`clsProviderLocation02`). |
| **Outcome** | Broken rule "Error: Verify provider is valid". |
| **Tables** | [PROVIDER_LOCATION](database-tables.md#provider_location) |
| **SQL** | [SQL-PLOC-01](sql/SQL-PLOC-01-provider-location-by-id.md) |
| **Source** | `SAIF.Business.View.Provider/clsProviderLocation.vb` |

---

## BR-PLOC-003 Provider type code must be non-empty

| Field | Value |
| --- | --- |
| **Statement** | The provider type of a location must resolve to a non-empty code. |
| **Trigger** | Level III rule check on `ProviderTypeCode`. |
| **Enforcement** | `clsProviderLocation.Rule_ValidProviderTypeCode`, `clsProviderLocation.vb:609, 631–634` (`clsProviderLocation03`). |
| **Outcome** | Broken rule "Error: Verify provider type is valid". |
| **Tables** | [PROVIDER_TYPE_CODE](database-tables.md#provider_type_code) |
| **SQL** | [SQL-PTYP-01](sql/SQL-PTYP-01-provider-type-by-code.md) |
| **Source** | `SAIF.Business.View.Provider/clsProviderLocation.vb` |

---

## BR-PLOC-004 Ineligible locations are excluded from filtered lists

| Field | Value |
| --- | --- |
| **Statement** | A provider location is treated as ineligible on a date when that date falls within any of its ineligibility periods; filtered location lists exclude such locations. |
| **Trigger** | `IsDuringIneligibilityPeriod(date)`; `FilterBy_ProviderTypeCode[AndEffectiveDate]`. |
| **Enforcement** | `clsProviderLocation.vb:125–130`; `clsProviderLocationCollection.vb:51–60`. |
| **Outcome** | Ineligible locations are excluded from the filtered collection. |
| **Tables** | [PROVIDER_INELIG_PERIOD](database-tables.md#provider_inelig_period) |
| **SQL** | [SQL-PINE-02](sql/SQL-PINE-02-ineligibility-periods-by-location.md) |
| **Source** | `SAIF.Business.View.Provider/clsProviderLocation.vb`, `SAIF.Business.View.Provider/clsProviderLocationCollection.vb` |

---

## BR-PLOC-005 Provider location dirty state is composite

| Field | Value |
| --- | --- |
| **Statement** | A provider location is dirty when its own state is dirty or its name object is dirty. |
| **Trigger** | Read of `clsProviderLocation.IsDirty`. |
| **Enforcement** | `clsProviderLocation.vb:461–472`. |
| **Outcome** | Composite dirty determination. |
| **Source** | `SAIF.Business.View.Provider/clsProviderLocation.vb` |

---

## BR-PADR-001 Addresses without expiration default to Date MaxValue

| Field | Value |
| --- | --- |
| **Statement** | An address with no expiration date is treated as expiring at `Date.MaxValue`. |
| **Trigger** | `clsProviderAddress.Fill` during load. |
| **Enforcement** | `clsProviderAddress.vb:372–377`. |
| **Outcome** | Open-ended addresses remain active indefinitely. |
| **Tables** | [PROVIDER_ADDRESS](database-tables.md#provider_address) |
| **SQL** | [SQL-PADR-01](sql/SQL-PADR-01-provider-addresses.md) |
| **Source** | `SAIF.Business.View.Provider/clsProviderAddress.vb` |

---

## BR-PADR-002 Address active-on-date determination

| Field | Value |
| --- | --- |
| **Statement** | An address is active on a date when that date lies between its start and termination dates. |
| **Trigger** | `ActiveAddresses()` / `ActiveAddresses(date)`. |
| **Enforcement** | `clsProviderAddressCollection.vb:85–101`. |
| **Outcome** | Inactive addresses are filtered out. |
| **Tables** | [PROVIDER_ADDRESS](database-tables.md#provider_address) |
| **SQL** | [SQL-PADR-01](sql/SQL-PADR-01-provider-addresses.md) |
| **Source** | `SAIF.Business.View.Provider/clsProviderAddressCollection.vb` |

---

## BR-PADR-003 Primary address fallback chain

| Field | Value |
| --- | --- |
| **Statement** | Primary-address selection falls back by type: Correspondence → Physical; Payment → Physical → Correspondence; Physical → Correspondence. |
| **Trigger** | Read of `CorrespondenceAddress`, `PaymentAddress`, `PhysicalAddress`, `PrimaryAddress(type)`. |
| **Enforcement** | `clsProviderAddressCollection.CalculatePrimaryAddress`, `clsProviderAddressCollection.vb:161–189`. |
| **Outcome** | A best-available address of the requested kind. |
| **Source** | `SAIF.Business.View.Provider/clsProviderAddressCollection.vb` |

---

## BR-PADR-004 Empty address returned when none match

| Field | Value |
| --- | --- |
| **Statement** | When no address of any fallback type exists, an empty address object is returned rather than nothing. |
| **Trigger** | End of `CalculatePrimaryAddress`. |
| **Enforcement** | `clsProviderAddressCollection.vb:186`. |
| **Outcome** | Callers never receive `Nothing`. |
| **Source** | `SAIF.Business.View.Provider/clsProviderAddressCollection.vb` |

---

## BR-PADR-005 Parent address preferred with child identity retained

| Field | Value |
| --- | --- |
| **Statement** | When resolving a child/parent provider address, the parent's address wins if it is non-empty; it is cloned, flagged `IsParent`, annotated with the parent name and ID, but re-stamped with the child's business name and location ID. Otherwise the child's own address is used. |
| **Trigger** | `clsProviderAddress.GetAddress(child, parent, type)`. |
| **Enforcement** | `clsProviderAddress.vb:270–299`. |
| **Outcome** | Parent-preferred address with child identity retained. |
| **Source** | `SAIF.Business.View.Provider/clsProviderAddress.vb` |

---

## BR-PADR-006 Address type codes are fixed

| Field | Value |
| --- | --- |
| **Statement** | Address type codes are fixed: Correspondence = `COR`, Payment = `PAY`, Physical = `PHY`; any other value raises an error. |
| **Trigger** | `GetAddressTypeCode(addressType)`. |
| **Enforcement** | `clsProviderAddress.vb:302–314`. |
| **Outcome** | Returns the code or throws `Exception("Invalid Address Type.")`. |
| **Source** | `SAIF.Business.View.Provider/clsProviderAddress.vb` |

---

## BR-PREL-001 Works-for relationships are WRK code

| Field | Value |
| --- | --- |
| **Statement** | A "works for" relationship is a relationship whose code is `WRK`. |
| **Trigger** | Read of `WorksFor` / `WorksFor(date)`. |
| **Enforcement** | `clsProviderRelationshipCollection.vb:89–111`. |
| **Outcome** | Only `WRK` relationships are returned. |
| **Tables** | [PROVIDER_RELATIONSHIP](database-tables.md#provider_relationship) |
| **SQL** | [SQL-PREL-01](sql/SQL-PREL-01-child-relationships.md), [SQL-PREL-02](sql/SQL-PREL-02-parent-relationships.md) |
| **Source** | `SAIF.Business.View.Provider/clsProviderRelationshipCollection.vb` |

---

## BR-PREL-002 Works-for defaults to active relationships only

| Field | Value |
| --- | --- |
| **Statement** | By default only currently active relationships are included in the works-for list; `ActiveOnly = False` disables the date test. |
| **Trigger** | Read of `WorksFor`. |
| **Enforcement** | `clsProviderRelationshipCollection.vb:93–98` (with `ActiveOnly`, `:56–64`). |
| **Outcome** | Expired relationships are excluded unless opted out. |
| **Source** | `SAIF.Business.View.Provider/clsProviderRelationshipCollection.vb` |

---

## BR-PREL-003 Relationship active-date determination

| Field | Value |
| --- | --- |
| **Statement** | A relationship is active when today is on or after its start date and on or before its termination date; a missing termination date is treated as `Date.MaxValue`. |
| **Trigger** | Read of `clsProviderRelationship.IsActive`; `WorksFor(activeDate)`. |
| **Enforcement** | `clsProviderRelationship.vb:95–112`; `clsProviderRelationshipCollection.vb:106–110`. |
| **Outcome** | Open-ended relationships stay active. |
| **Source** | `SAIF.Business.View.Provider/clsProviderRelationship.vb`, `SAIF.Business.View.Provider/clsProviderRelationshipCollection.vb` |

---

## BR-PREL-004 Destination relationship type is the opposite of the source

| Field | Value |
| --- | --- |
| **Statement** | The destination end of a relationship is always the opposite of the source end (source Child → destination Parent, otherwise destination Child). |
| **Trigger** | Read of `DestinationRelationshipType` / `DestinationProviderLocation`. |
| **Enforcement** | `clsProviderRelationship.vb:135–160`. |
| **Outcome** | Callers always navigate to the other party. |
| **Source** | `SAIF.Business.View.Provider/clsProviderRelationship.vb` |

---

## BR-PINE-001 Ineligibility periods without termination default to Date MaxValue

| Field | Value |
| --- | --- |
| **Statement** | An ineligibility period with no termination date is treated as terminating at `Date.MaxValue`.* |
| **Trigger** | Read of `clsProviderIneligibilityPeriod.TerminationDate`. |
| **Enforcement** | `clsProviderIneligibilityPeriod.vb:~127–140`. |
| **Outcome** | Open-ended ineligibility never expires. |
| **Tables** | [PROVIDER_INELIG_PERIOD](database-tables.md#provider_inelig_period) |
| **SQL** | [SQL-PINE-01](sql/SQL-PINE-01-ineligibility-period-by-id.md), [SQL-PINE-02](sql/SQL-PINE-02-ineligibility-periods-by-location.md) |
| **Source** | `SAIF.Business.View.Provider/clsProviderIneligibilityPeriod.vb` |

---

## BR-DATE-001 Dated records are in effect within their date window

| Field | Value |
| --- | --- |
| **Statement** | A dated record (MCO enrollment, DCBS cost charge, service contract) is in effect on a date when the date is on/after the effective date and either there is no expiration date or the date is on/before it. |
| **Trigger** | `IsInEffect(date)`, `IsActive`, `IsExpired`. |
| **Enforcement** | `clsMCOProvider.vb:~155–178`; `clsDCBSCostCharge.vb:41–68`; `clsProviderServiceContract.vb:~130–160`. |
| **Outcome** | Uniform date-window evaluation. |
| **Tables** | [PROVIDER_DCBS_COST_CHARGE](database-tables.md#provider_dcbs_cost_charge), [MCO_PROVIDER](database-tables.md#mco_provider), [PROVIDER_SERVICE_CONTRACT](database-tables.md#provider_service_contract) |
| **SQL** | [SQL-DCBS-01](sql/SQL-DCBS-01-dcbs-cost-charges.md), [SQL-MCO-01](sql/SQL-MCO-01-mco-provider-plans.md), [SQL-PSVC-02](sql/SQL-PSVC-02-provider-service-contracts.md) |
| **Source** | `SAIF.Business.View.Provider/clsMCOProvider.vb`, `SAIF.Business.View.Provider/clsDCBSCostCharge.vb`, `SAIF.Business.View.Provider/clsProviderServiceContract.vb` |

---

## BR-MCO-001 MCO plan must match the assigned plan ID

| Field | Value |
| --- | --- |
| **Statement** | An MCO plan attached to an enrollment or service contract must match the plan ID already assigned to that record. |
| **Trigger** | `SetPlan(inPlan)` during list construction. |
| **Enforcement** | `clsMCOProvider.vb:106–112`; `clsProviderServiceContract.vb:102–108`. |
| **Outcome** | Throws `ApplicationException("MCO plan submitted does not match plan assigned.")`. |
| **Tables** | [MCO_PROVIDER](database-tables.md#mco_provider), [PROVIDER_SERVICE_CONTRACT](database-tables.md#provider_service_contract) |
| **SQL** | [SQL-MCO-01](sql/SQL-MCO-01-mco-provider-plans.md), [SQL-PSVC-02](sql/SQL-PSVC-02-provider-service-contracts.md) |
| **Source** | `SAIF.Business.View.Provider/clsMCOProvider.vb`, `SAIF.Business.View.Provider/clsProviderServiceContract.vb` |

---

## BR-PSVC-001 Service contracts are limited to the offset window

| Field | Value |
| --- | --- |
| **Statement** | Service contracts are limited to those still open or expired within the offset window (default 721 days); an offset of zero or less removes the restriction. |
| **Trigger** | `clsProviderServiceContractList..ctor`. |
| **Enforcement** | `clsProviderServiceContract.vb:216–229`. |
| **Outcome** | Older expired contracts are excluded. |
| **Tables** | [PROVIDER_SERVICE_CONTRACT](database-tables.md#provider_service_contract) |
| **SQL** | [SQL-PSVC-02](sql/SQL-PSVC-02-provider-service-contracts.md) |
| **Source** | `SAIF.Business.View.Provider/clsProviderServiceContract.vb` |

---

## BR-SRCH-001 At least one search field is required

| Field | Value |
| --- | --- |
| **Statement** | At least one search field must be supplied before a provider search is considered valid. |
| **Trigger** | Rule-engine validation of `clsSearchCriteria.ProviderName`. |
| **Enforcement** | `clsProviderSearch.Rule_ValidCriteria`, `clsProviderSearch.vb:411, 416–430`. |
| **Outcome** | Broken rule "Error: Enter your search criteria". |
| **Source** | `SAIF.Business.View.Provider/clsProviderSearch.vb` |

---

## BR-SRCH-002 Zip code must be numeric

| Field | Value |
| --- | --- |
| **Statement** | A supplied zip code must be numeric (an empty zip code is allowed). |
| **Trigger** | Rule-engine validation of `ZipCode`. |
| **Enforcement** | `clsProviderSearch.Rule_ValidZipCode`, `clsProviderSearch.vb:412, 432–436`. |
| **Outcome** | Broken rule "Error: Zip code must be numeric". |
| **Source** | `SAIF.Business.View.Provider/clsProviderSearch.vb` |

---

## BR-SRCH-003 Tax ID length limit

| Field | Value |
| --- | --- |
| **Statement** | A supplied tax ID, with hyphens removed, must be fewer than 10 characters. |
| **Trigger** | Rule-engine validation of `TaxId`. |
| **Enforcement** | `clsProviderSearch.Rule_ValidTaxId`, `clsProviderSearch.vb:413, 437–440`. |
| **Outcome** | Broken rule "Error: The tax id is too long". |
| **Source** | `SAIF.Business.View.Provider/clsProviderSearch.vb` |

---

## BR-SRCH-004 Businessperson selector maps to business flag

| Field | Value |
| --- | --- |
| **Statement** | The business/person selector maps to `BUSINESS_FLAG = 'Y'` for BUSINESS, `'N'` for PERSON, and no flag filter for any other value. |
| **Trigger** | `searchForProvider`. |
| **Enforcement** | `clsProviderSearch.vb:96–121`. |
| **Outcome** | Result scope restricted or unrestricted accordingly. |
| **Tables** | [PROVIDER_LOCATION](database-tables.md#provider_location) |
| **SQL** | [SQL-SRCH-01](sql/SQL-SRCH-01-provider-search.md) |
| **Source** | `SAIF.Business.View.Provider/clsProviderSearch.vb` |

---

## BR-SRCH-005 Provider name search also matches registered names

| Field | Value |
| --- | --- |
| **Statement** | When a provider name is supplied, the search also matches registered names by unioning a second query joined to `provider_tax_id`. |
| **Trigger** | `searchForProvider`. |
| **Enforcement** | `clsProviderSearch.vb:143–155, 224–229`. |
| **Outcome** | Registered-name matches are included. |
| **Tables** | [PROVIDER_TAX_ID](database-tables.md#provider_tax_id) |
| **SQL** | [SQL-SRCH-01](sql/SQL-SRCH-01-provider-search.md) |
| **Source** | `SAIF.Business.View.Provider/clsProviderSearch.vb` |

---

## BR-SRCH-006 Sort name derivation

| Field | Value |
| --- | --- |
| **Statement** | A person's sort name is derived by taking the text before the first space and re-appending everything from the first comma; business rows and rows without a comma sort on the full name. |
| **Trigger** | `FormatSortName` during result materialisation. |
| **Enforcement** | `clsProviderSearch.vb:253–267`. |
| **Outcome** | Consistent person/business sort ordering. |
| **Source** | `SAIF.Business.View.Provider/clsProviderSearch.vb` |

---

## BR-SRCH-007 Search results capped at 300 rows

| Field | Value |
| --- | --- |
| **Statement** | A provider search returns at most 300 result rows; loading stops once the collection exceeds 299 entries. |
| **Trigger** | Result loop in `searchForProvider`. |
| **Enforcement** | `clsProviderSearch.vb:246–249`. |
| **Outcome** | Extra rows are silently discarded. |
| **Tables** | [PROVIDER_LOCATION](database-tables.md#provider_location) |
| **SQL** | [SQL-SRCH-01](sql/SQL-SRCH-01-provider-search.md) |
| **Source** | `SAIF.Business.View.Provider/clsProviderSearch.vb` |

---

## BR-SRCH-008 Search text normalization

| Field | Value |
| --- | --- |
| **Statement** | Search text values are upper-cased and trimmed, name/street/phone comparisons are prefix matches, and phone input has `-` and `.` removed. |
| **Trigger** | `searchForProvider` parameter construction. |
| **Enforcement** | `clsProviderSearch.vb:126–214`. |
| **Outcome** | Case-insensitive prefix matching. |
| **Source** | `SAIF.Business.View.Provider/clsProviderSearch.vb` |

---

## BR-DATA-001 No write operations are supported

| Field | Value |
| --- | --- |
| **Statement** | This library performs no create, insert, update, or delete operations; every non-retrieve SQL property raises an error. |
| **Trigger** | Any access to `CreateSQL`, `InsertSQL`, `UpdateSQL`, `DeleteSQL` on any criteria class. |
| **Enforcement** | All 12 criteria classes (e.g. `clsProvider.vb:416–447`). |
| **Outcome** | `ApplicationException(clsConstants.Messages.InvalidSQLProperty)`. |
| **Source** | `SAIF.Business.View.Provider/clsProvider.vb` (and the other 11 criteria classes) |

## Notes
- No confirmed dependency-doc-sourced (inherited) rules were found for this library.

> **Note:** Statements marked with `*` were inferred from code structure, naming conventions, or
> contextual evidence where direct confirmation was not available in source artifacts. Statements
> marked with `**` could not be confirmed; treat as unknown until verified.

## Related documentation
- [Index](index.md)
- [Overview](overview.md)
- [Architecture](architecture.md)
- [Dependencies](dependencies.md)
- [Operations and processes](operations-processes.md)
- [Database tables](database-tables.md)
- [SQL catalog](sql/index.md)
- [API reference](api/index.md)

> **Note:** Statements marked with * were inferred from code structure, naming conventions, or
> contextual evidence where direct confirmation was not available in source artifacts. Statements
> marked with ** could not be confirmed; treat as unknown until verified.

## Sources
- `SAIF.Business.View.Provider/clsProvider.vb`
- `SAIF.Business.View.Provider/clsProviderCollection.vb`
- `SAIF.Business.View.Provider/clsProviderLocation.vb`
- `SAIF.Business.View.Provider/clsProviderLocationCollection.vb`
- `SAIF.Business.View.Provider/clsProviderAddress.vb`
- `SAIF.Business.View.Provider/clsProviderAddressCollection.vb`
- `SAIF.Business.View.Provider/clsProviderRelationship.vb`
- `SAIF.Business.View.Provider/clsProviderRelationshipCollection.vb`
- `SAIF.Business.View.Provider/clsProviderIneligibilityPeriod.vb`
- `SAIF.Business.View.Provider/clsProviderIneligibilityPeriodCollection.vb`
- `SAIF.Business.View.Provider/clsProviderTaxID.vb`
- `SAIF.Business.View.Provider/clsProviderTaxIDCollection.vb`
- `SAIF.Business.View.Provider/clsProviderType.vb`
- `SAIF.Business.View.Provider/clsProviderTypeCollection.vb`
- `SAIF.Business.View.Provider/clsProviderSearch.vb`
- `SAIF.Business.View.Provider/clsDCBSCostCharge.vb`
- `SAIF.Business.View.Provider/clsMCOProvider.vb`
- `SAIF.Business.View.Provider/clsProviderServices.vb`
- `SAIF.Business.View.Provider/clsProviderServiceContract.vb`
